#pragma once
#include <Types.h>
#include <BasicDagLibrary.h>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void PrintPTRVectorToMMFile( const double * vec, const U64 nnz, const bool complex, const std::string mtxFileName );
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#ifdef __QTS__
void Pos2RowColQTSbd( U32 & r, U32 & c, U32 m, U32 n, U64 pos );
void Pos2RowColQTSad( U32 & r, U32 & c, U32 m, U32 n, U64 pos );
void Pos2RowColQTSod( U32 & r, U32 & c, U32 m, U32 n, U64 pos );
void Pos2RowColQTS( U32 & r, U32 & c, U32 m, U32 n, U64 pos );
U32 Pos2Row( const U64 _pos, const U32 _m, const U32 _n );
U32 Pos2Col( const U64 _pos, const U32 _m, const U32 _n );
#else
U32 Pos2Row( const U64 _pos, const U32 _m, const U32 _n );
U32 Pos2Col( const U64 _pos, const U32 _m, const U32 _n );
#endif

void SpMVQTS( const MatrixProperties & mtxMetaData, const U64 * nodes, const double * x, double * y, const U32 numRuns, const U32 numThreads, timespec * clks );
